1. Field of Art
The disclosure relates generally to a method and/or system of scaling images for display, and more specifically, to a method and/or system for upscaling or downscaling images with reduced memory bandwidth requirement.
2. Description of Related Art
Different devices display images of different resolutions. Therefore, an image adapted for one device may not be displayed on another device compatible with a different resolution. To display the same image on display devices compatible with different resolutions, the image must be scaled. That is, if the original image is too small for display on the display device, the original image must be upscaled to a larger image with more pixels than the original image. Conversely, if the original image is too large to be displayed on the display device, the original image must be downscaled to a smaller image with fewer pixels than the original image.
The scaling often requires two separate scaling processes: horizontal scaling and vertical scaling. The horizontal scaling changes the image width (x-direction) of the image. The vertical scaling, on the other hand, changes the image height (y-direction) of the image. Generally, the horizontal scaling is followed by the vertical scaling during a downscaling process. On the contrary, the vertical scaling is followed by the horizontal scaling during an upscaling process in order to save memory bandwidth for the vertical scaler.
Such scaling process, however, requires high memory bandwidth. In conventional methods, the images scaled in vertical (or horizontal) direction by a vertical (or horizontal) scaler are stored in the memory and then retrieved from the memory for horizontal (or vertical) scaling by a horizontal (or vertical) scaler. These processes of storing and retrieving the images consume a large amount of memory bandwidth. Therefore, the memory bandwidth may serve as a limiting factor in increasing the speed of scaling or other related processes.
The scaling of images are sometimes performed as part of transcoding process during which images compressed in one format are converted to images in another format. The transcoding of images, however, often also requires high memory bandwidth. The transcoding process includes encoding or decoding processes in addition to the scaling process that also require access to the memory. Access to memory during such transcoding process may become a bottleneck that slows down the overall transcoding process. Therefore, it is crucial that the required memory bandwidth be reduced in the scaling process to save the memory bandwidth for other transcoding processes.
Compressed images are typically processed in macroblocks that consist of a horizontal and vertical array of pixels. The macroblocks make it difficult to scale the decompressed image unless the image is written out to memory. After writing out the macroblocks to the memory, a traditional pixel-based scaler is used to scale pixels in the horizontal and vertical direction.